<?php

require_once(BaseConfig::LoadClass('objeto_base.class.php'        ));
require_once(BaseConfig::LoadClass('filtro.class.php'             ));
require_once(BaseConfig::LoadClass('abc.class.php'                ));
require_once(BaseConfig::LoadClass('plugin_abc.class.php'         ));
require_once(BaseConfig::LoadClass('cotizador_extendido.class.php'));
require_once(BaseConfig::LoadClass('log.class.php'                ));

class ModeloSISA extends ObjetoBase {
  var $intIdSISA      ;
  var $strAMIS        ;
  var $intIdMarca     ;
  var $intIdModelo    ;
  var $intAnio        ;
  var $strNombre      ;
  var $intIdMoneda    ;
  var $dteFechaImporte;
  var $fltValorImporte;
  var $strCodigoTabla ;
  var $intOrden       ;
  
  function ModeloSISA($intIdSISA = 0) {
    $arrMapaDatos = Array();
    
    $arrMapaDatos['id_sisa'      ] = Array('NombreVariable' => 'intIdSISA'      , 'TipoVariable' => 'N');
    $arrMapaDatos['amis'         ] = Array('NombreVariable' => 'strAMIS'        , 'TipoVariable' => 'S');
    $arrMapaDatos['id_marca'     ] = Array('NombreVariable' => 'intIdMarca'     , 'TipoVariable' => 'N');
    $arrMapaDatos['id_modelo'    ] = Array('NombreVariable' => 'intIdModelo'    , 'TipoVariable' => 'N');
    $arrMapaDatos['anio'         ] = Array('NombreVariable' => 'intAnio'        , 'TipoVariable' => 'N');
    $arrMapaDatos['nombre'       ] = Array('NombreVariable' => 'strNombre'      , 'TipoVariable' => 'S');
    $arrMapaDatos['id_moneda'    ] = Array('NombreVariable' => 'intIdMoneda'    , 'TipoVariable' => 'N');
    $arrMapaDatos['fecha_importe'] = Array('NombreVariable' => 'dteFechaImporte', 'TipoVariable' => 'D');
    $arrMapaDatos['valor_importe'] = Array('NombreVariable' => 'fltValorImporte', 'TipoVariable' => 'N');
    $arrMapaDatos['codigo_tabla' ] = Array('NombreVariable' => 'strCodigoTabla' , 'TipoVariable' => 'S');
    $arrMapaDatos['orden'        ] = Array('NombreVariable' => 'intOrden'       , 'TipoVariable' => 'N');
    
    $this->__ArmarDatosPrivados('cat_modelos_sisa', $arrMapaDatos, 'id_sisa');
    $this->SeleccionarPorIndice($intIdSISA);
  }
}

class FiltroModeloSISA extends Filtro {
  function FiltroModeloSISA() {
    $arrProceso['nombre'       ] = "Nombre"       ;
    $arrProceso['amis'         ] = "AMIS"         ;
    $arrProceso['anio'         ] = "Anio"         ;
    $arrProceso['id_marca'     ] = "Marca"        ;
    $arrProceso['id_modelo'    ] = "Modelo"       ;
    $arrProceso['id_moneda'    ] = "Moneda"       ;
    $arrProceso['fecha_importe'] = "Fecha Importe";
    $arrProceso['valor_importe'] = "Valor Importe";
    $arrProceso['codigo_tabla' ] = "Codigo Tabla" ;
    $arrProceso['orden'        ] = "Orden"        ;
    
    $arrReferencias["id_marca"]["tabla"]["nombre"] = "cat_marcas";
    $arrReferencias["id_marca"]["tabla"]["indice"] = "id_marca"  ;
    $arrReferencias["id_marca"]["tabla"]["desc"  ] = "nombre"    ;
    
    parent::CrearFiltro("cat_modelos_sisa", "id_sisa", $arrProceso, "Busqueda", "", "orden ASC", "ModeloSISA", $arrReferencias);
  }
}

class PluginABC_ModeloSISA extends PluginABC {
  function PluginABC_ModeloSISA() {
    $this->strNombreBoton   = "Obtener SISA de Modelo desde WEB Service";
    $this->bolLlevaDosPasos = false;
  }
  
  function EjecutarPlugin() {
    Variables::SmallTimeLap(true, "PluginEjec");
    $oCotizador  = new CotizadorExtendido();
    $oConecta    = new Conecta();
    
    $strConsulta = "TRUNCATE TABLE cat_modelos_sisa";
    $oConecta->Consulta($strConsulta);
    
    $strConsulta       = "SELECT id_marca, id_modelo, anio FROM cat_anios_modelo ORDER BY id_marca ASC, orden ASC";
    $oConecta->Consulta($strConsulta);
    $arrModelos        = $oConecta->GetCompleteRes();
    $strRes            = "";
    $intContadorCargas = 0;
    $oModeloSISA       = new ModeloSISA();
    $oModeloSISA->__strNombreIndice = "";
    $oModeloSISA->__arrMapaTipos["id_sisa"] = "N";
    
    $intActual = 0;
    $intTotal  = count($arrModelos);
    foreach($arrModelos as $arrInfoRes) {
      set_time_limit(10);
      
      $intActual++;
//      if($intActual < 3198) continue;
//      prent_r($arrInfoRes);
      Log::AgregarQuickLog("Prueba Modelo SISA", "Paso $intActual de $intTotal (" . sprintf("%0.2f", ($intActual / $intTotal) * 100) . "%)");
      
      $oCotizador->ObtenerSisaModelo($arrInfoRes["id_marca"], $arrInfoRes["id_modelo"], $arrInfoRes["anio"]);
      $arrRespuesta = $oCotizador->ObtenerArregloRespuesta();
      
      foreach($arrRespuesta as $arrInfoCol) {
        $oModeloSISA->LimpiarObjeto();
        $oModeloSISA->LlenarObjeto($arrInfoCol);
        $oModeloSISA->GuardarObjeto();
        $intContadorCargas++;
      }
    }
    $strRes .= "</table>";
    
    $fltLapTime = Variables::SmallTimeLap(false, "PluginEjec");
    $strUnidadMedidaLap = "segundos";
    if($fltLapTime > 180) {
      $fltLapTime /= 60;
      $strUnidadMedidaLap = "minutos";
      if($fltLapTime >= 120) {
        $fltLapTime /= 60;
        $strUnidadMedidaLap = "horas";
      }
    }
    
    $strRes = "<tr><th colspan='3'>Se cargaron $intContadorCargas datos (Tiempo: " . sprintf("%0.4f", $fltLapTime) . " $strUnidadMedidaLap):</th></tr>" . $strRes;
    $strRes = "<table class='TablaReportes'>" . $strRes;
    
    return $strRes;
  }
}

class PluginABC_ModeloSISAExtra extends PluginABC {
  function PluginABC_ModeloSISAExtra() {
    $this->strNombreBoton   = "Obtener AMIS 2 de modelos desde Web Service";
    $this->bolLlevaDosPasos = false;
  }
  
  function EjecutarPlugin() {
    Variables::SmallTimeLap(true, "PluginEjec");
    $oCotizador  = new CotizadorExtendido();
    $oConecta    = new Conecta();
    
    $strConsulta       = "SELECT DISTINCT(id_sisa) AS sisa FROM cat_modelos_sisa WHERE amis = ''";
    $oConecta->Consulta($strConsulta);
    $arrModelos        = $oConecta->GetCompleteRes();
    $strRes            = "";
    $intContadorCargas = 0;
    
    $intActual = 0;
    $intTotal  = count($arrModelos);
    foreach($arrModelos as $arrInfoRes) {
      set_time_limit(10);
      
      $intActual++;
      Log::AgregarQuickLog("Prueba Modelo SISA - AMIS", "Paso $intActual de $intTotal (" . sprintf("%0.2f", ($intActual / $intTotal) * 100) . "%)");
      
      $oCotizador->ObtenerCodigoAmis($arrInfoRes["sisa"]);
      
      $strAmis = $oCotizador->ObtenerArregloRespuesta();
      
      $strConsulta = "UPDATE cat_modelos_sisa SET amis = '$strAmis' WHERE id_sisa = '{$arrInfoRes["sisa"]}'";
      $oConecta->Consulta($strConsulta);
      
      $intContadorCargas++;
    }
    $strRes .= "</table>";
    
    $fltLapTime = Variables::SmallTimeLap(false, "PluginEjec");
    $strUnidadMedidaLap = "segundos";
    if($fltLapTime > 180) {
      $fltLapTime /= 60;
      $strUnidadMedidaLap = "minutos";
      if($fltLapTime >= 120) {
        $fltLapTime /= 60;
        $strUnidadMedidaLap = "horas";
      }
    }
    
    $strRes = "<tr><th colspan='3'>Se cargaron $intContadorCargas datos (Tiempo: " . sprintf("%0.4f", $fltLapTime) . " $strUnidadMedidaLap):</th></tr>" . $strRes;
    $strRes = "<table class='TablaReportes'>" . $strRes;
    
    return $strRes;
  }
}

class ABC_ModeloSISA extends ABC_Base {
  function ABC_ModeloSISA() {
    $strClaseBase     = "ModeloSISA"       ;
    $strClaseFiltro   = "FiltroModeloSISA" ;
    $strCampoMostrar  = "anio,nombre"      ;
    $strOpcionListado = "abc_modelo_sisa"  ;
    $strOpcionGuardar = "abc_modelo_sisa"  ;
    $strClaseCarga    = ""                 ;

    $arrNombresColumnas = array();
    $arrNombresColumnas['nombre'       ] = "Nombre"       ;
    $arrNombresColumnas['amis'         ] = "AMIS"         ;
    $arrNombresColumnas['id_marca'     ] = "Marca"        ;
    $arrNombresColumnas['id_modelo'    ] = "Modelo"       ;
    $arrNombresColumnas['anio'         ] = "A&ntilde;o"   ;
    $arrNombresColumnas['id_moneda'    ] = "Moneda"       ;
    $arrNombresColumnas['fecha_importe'] = "Fecha Importe";
    $arrNombresColumnas['valor_importe'] = "Valor Importe";
    $arrNombresColumnas['orden'        ] = "Orden"        ;
    $arrNombresColumnas['codigo_tabla' ] = "Codigo Tabla" ;

    $arrReferencias = array();
    $arrReferencias["id_marca"]["tabla"]["nombre"] = "cat_marcas";
    $arrReferencias["id_marca"]["tabla"]["indice"] = "id_marca"  ;
    $arrReferencias["id_marca"]["tabla"]["desc"  ] = "nombre"    ;
    
    
    $arrPlugIns               = array();
    $arrPlugIns["Globales"][] = "PluginABC_ModeloSISA";
    $arrPlugIns["Globales"][] = "PluginABC_ModeloSISAExtra";
    
    $this->Inicializar($strClaseBase, $arrNombresColumnas, $strOpcionListado, $strOpcionGuardar, $strCampoMostrar, $strClaseFiltro, $arrReferencias, "", $strClaseCarga);
    $this->arrPlugIns = $arrPlugIns;
    
    $this->bolABCLista             = true ;
    $this->bolABCListaOcultarTD    = true ;
    $this->bolPosibleNuevoElemento = false;
    $this->intTipoGuardado         = 1    ;
    $this->intNumeroRes            = 20   ;
    $this->bolSoloLectura          = true ;
    $this->bolOcultarTituloEnLista = true ;
    $this->bolABCListaMostrarInfo  = true ;
  }
}

?>